package com.atguigu.system.wsocket;

//import cn.afterturn.easypoi.handler.inter.IReadHandler;
//import com.zxh.example.entity.User;
//import com.zxh.example.util.ExcelUtils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

@Service
@Slf4j
public class TestService {

    public String upload(MultipartFile file) {
        Integer[] percent = {1};
        sendMessage(percent[0]);
        Integer percentMax1 = 20;
        Integer percentMax2 = 100;
        // 读取Excel中的数据到list集合中
//        List<User> list = new ArrayList<>();
//        //解析excel，解析1%~20%
//        ExcelUtils.importExcelBySax(file, User.class, 2, new IReadHandler<User>() {
//            @Override
//            public void handler(User o) {
//                list.add(o);
//                //每读取指定行，推送1
//                if (list.size() % 10000 == 0 && percent[0] < percentMax1) {
//                    percent[0]++;
//                    sendMessage(percent[0]);
//                }
//            }
//
//            @Override
//            public void doAfterAll() {
//                //解析成功
//                percent[0] = percentMax1;
//                sendMessage(percent[0]);
//            }
//        });
//
//        //模拟数据插入，每1000条发送一次消息 21%~100%
//        Integer maxSize = 1000;
//        Integer queryCnt = list.size() % maxSize == 0 ? list.size() / maxSize : (list.size() / maxSize) + 1;
//        Integer sendCnt = 10;
//        for (int i = 0; i < queryCnt; i++) {
//            Integer endIndex = (i + 1) * maxSize;
//            if (endIndex > list.size()) {
//                endIndex = list.size();
//            }
//            //集合截取
//            List<User> tempList = new ArrayList<>(list.subList(i * maxSize, endIndex));
//            //模拟数据查询
//
//            if (queryCnt % sendCnt == 0 && percent[0] < percentMax2) {
//                percent[0]++;
//                sendMessage(percent[0]);
//            }
//        }
        percent[0] = percentMax2;
        sendMessage(percent[0]);
        return "success";
    }

    /**
     * 自定义封装的发送方法
     * @param msg
     */
    private void sendMessage(Integer msg) {
        try {
            WebSocketServer.sendInfo(msg.toString(), "111");
        } catch (IOException e) {
            log.error("消息发送异常：" + e.getMessage());
            e.printStackTrace();
        }
    }
}